package fr.lelouet.ServersModel.physical;

/**
 * a CRAC is required to produce air at a temperature below a maximum given,
 * from air at a given temperature, and for that will consume electricity
 * @author le louet
 */
public interface Crac {

  /** @return the flux of air that this can provide, in L/s */
  public double getAirFlux();

  /**
   * @return the consumption, in Watt
   * @param requiredTemp
   *          the max temperature of the air we require this to provide, in K
   * @param providedTemp
   *          the temperature of the air that is provided to this Crac, in K
   */
  public double getConsumption(double requiredTemp, double providedTemp);

  /**
   * @param requiredTemp
   *          the temperature in K we need this Crac to provide at maximum
   * @param providedTemp
   *          the temperature in K that enters this Crac
   * @return the effective temperature, in K, this Crac provides
   */
  public double getEffectiveTemperatur(double requiredTemp, double providedTemp);
}
